package off_trial


import (
	// "bp/cache"
	sqlc "bp/db/sqlc"
)

type FilterOffTrialPtrsFunc func(*sqlc.OffTrial) bool
type FilterOffTrialItemPtrsFunc func(*sqlc.OffTrialItem) bool

// FilterOffTrialItemPtrs  []*sqlc.OffTrial => []*sqlc.OffTrial
func (s *OffTrialEntityServiceImp) FilterOffTrialPtrs(ptrs []*sqlc.OffTrial, filter FilterOffTrialPtrsFunc) []*sqlc.OffTrial {
	if len(ptrs) == 0 {
		return ptrs
	}
	var valPtrs []*sqlc.OffTrial
	for _, ptr := range ptrs {
		if filter(ptr) {
			valPtrs = append(valPtrs, ptr)
		}
	}
	return valPtrs
}

// FilterOffTrialItemPtrs  []*sqlc.OffTrialItem => []*sqlc.OffTrialItem
func (s *OffTrialEntityServiceImp) FilterOffTrialItemPtrs(ptrs []*sqlc.OffTrialItem, filter FilterOffTrialItemPtrsFunc) []*sqlc.OffTrialItem {
	if len(ptrs) == 0 {
		return ptrs
	}
	var valPtrs []*sqlc.OffTrialItem
	for _, ptr := range ptrs {
		if filter(ptr) {
			valPtrs = append(valPtrs, ptr)
		}
	}
	return valPtrs
}

// SplitOffTrialPtrs  []*sqlc.OffTrial => truePart []*sqlc.OffTrial, falsePart []*sqlc.OffTrial
func (s *OffTrialEntityServiceImp) SplitOffTrialPtrs(ptrs []*sqlc.OffTrial, spliter FilterOffTrialPtrsFunc) (truePart []*sqlc.OffTrial, falsePart []*sqlc.OffTrial) {
	if len(ptrs) == 0 {
		return
	}
	for _, ptr := range ptrs {
		if spliter(ptr) {
			truePart = append(truePart, ptr)
		} else {
			falsePart = append(falsePart, ptr)
		}
	}
	return
}